#ifndef TRACKVECTOR_H
#define TRACKVECTOR_H

#include <OgreVector3.h>

#include "TrackNode.h"
class TrackVector
{
    public:
        TrackVector();
        virtual ~TrackVector();

        void SetPosition(Ogre::Vector3 pos);
        void SetX(float x);
        void SetY(float y);
        void SetZ(float z);
        void SetNormal(Ogre::Vector3 norm);
        void SetDirector(Ogre::Vector3 dir);
        void SetCurvature(Ogre::Vector3 curv);
        void SetSize(float size);
        void SetCurvatureX(float x);
        void SetCurvatureY(float y);
        void SetCurvatureZ(float z);
        Ogre::Vector3 GetNormal();
        Ogre::Vector3 GetDirector();
        Ogre::Vector3 GetCurvature();
        Ogre::Vector3 GetPosition();
        float GetSize();
        inline TrackNode* GetEnd()
        {
            return m_end;
        }
        inline TrackNode* GetBack()
        {
            return m_back;
        }
        inline void SetEnd(TrackNode* end)
        {
            m_end = end;
        }
        inline void SetBack(TrackNode* back)
        {
            m_back = back;
        }
    protected:
    private:
        Ogre::Vector3 m_position;
        Ogre::Vector3 m_normal;
        Ogre::Vector3 m_director;
        Ogre::Vector3 m_curvature;

        Ogre::Real m_size;
        TrackNode* m_back;
        TrackNode* m_end;
};

#endif // TRACKVECTOR_H
